class Solution {
public:
    vector<int> maxSlidingWindow(vector<int>& nums, int k) {
        deque<int> que;
        for (int i = 0; i < k; i++)
        {
            while (!que.empty() && nums[que.back()] < nums[i]) que.pop_back();
            que.push_back(i);
        }
        vector<int> arr;
        arr.push_back(nums[que.front()]);
        for (int i = k; i < nums.size(); i++)
        {
            if (que.front() <= i - k) que.pop_front();
            while (!que.empty() && nums[que.back()] < nums[i]) que.pop_back();
            que.push_back(i);
            arr.push_back(nums[que.front()]);
        }
        return arr;
    }
};